\chapter{Tests}
Au cour de l'implémentation du logiciel, et la mise en place des différentes briques du projet, nous avons put constater visuellement les étapes franchies en terme de performance, de complexité de scène, de résolution des cartes d'ombre et du nombre de points lumineux dans la scène. Dans le but de mettre en avant ces différents points, 5 tests sont effectués.

\section{Environnement des Tests}
Les tests sont réalisés sur une machine équipée d'un processeur Intel Core 2 Quad 2.4GHz et une carte vidéo NVidia GeForce 8800 GTX avec le driver NVIDIA de version 270.41.19. Le Système d'exploitation est Ubuntu 11.04.

Les tests sont des résultats du rendu OpenGL dans une fenêtre de résolution 600 x 600 pixels. La vue de la scène et la position de la lumière sont illustré dans la figure 5.1. 
Le modèle testé est issu d'un fichier au format Wavefront(.obj) il est composé de 1644 points et 1622 triangles.
\begin{figure}[!h]
\begin{center}
\subfigure[Vue camera]{ \includegraphics[scale=0.25]{/Test/Scene_View.png} }
\subfigure[Vue lumière]{ \includegraphics[scale=0.25]{/Test/Light_View.png} }
\end{center}
\caption{Vue de la camera et de la source de lumière}
\label{fig:inf}
\end{figure}

\newpage
\subsection{Résolution des cartes d'ombres}
Le premier résultat d'ombre obtenu est issu d'une carte d'ombre unique. Le test met en avant différents rendus obtenu selon des résolutions différentes. Les cartes d'ombres sont illustrées sur la figure 5.2. La résolution est un facteur qui impact directement la précision du contour de l'ombre, l'objet deviens reconnaissable à partir d'une résolution de 64x64 pixels et deviens de plus en plus dessiner quand elle augmente. Le rendu de l'ombre projeté associé est illustré sur la figure 5.3. L'ombre est fortement pixelisé dans les basse résolution, ce qui rend l'ombre déformé et non réaliste. Au contraire, dans les hautes résolutions, elle deviens plus réaliste mais reste pixelisé. 

En terme de performance, le nombre d'images par secondes chute avec l'augmentation de la résolution, voir figure 5.4. Le pipeline graphique explique cette chute, en effet l'augmentation du nombre de pixel augmente la charge de calcul des processeurs graphique, sachant que leurs nombres est de 128 sur la machine test, il est normal de constater que celà intervient rapidement, dès 64x64 pixels. 

Une résolution de 128x128 semble être un bon compromis dans cette exemple.
\begin{figure}[!h]
\subfigure[16x16]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_Map_16*16.png} }
\subfigure[32x32]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_Map_32*32.png} }
\subfigure[64x64]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_Map_64*64.png} }
\begin{center}
\subfigure[128x128]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_Map_128*128.png} }
\subfigure[256x256]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_Map_256*256.png} }
\end{center}
\caption{Carte d'ombre selon la résolution}
\end{figure}

\begin{figure}[!h]
\subfigure[16x16]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_16*16.png} }
\subfigure[32x32]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_32*32.png} }
\subfigure[64x64]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_64*64.png} }
\begin{center}
\subfigure[128x128]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_128*128.png} }
\subfigure[256x256]{ \includegraphics[scale=0.25]{/Test/Resolution/Resolution_256*256.png} }
\caption{Ombre projeté selon la résolution de la Carte d'ombre}
\end{center}
\end{figure}

\begin{center}
\begin{figure}[!h]
\begin{center}
\includegraphics[scale=0.5]{/Test/Resolution/Perf.png}
\end{center}
\caption{Impact de la résolution sur les performances}
\end{figure}
\end{center}

\newpage
\subsection{Nombre de carte d'ombre appliquées à la scène}
L'étape suivante du développement est d'avoir plusieurs cartes d'ombres décrivant une même source de lumière légèrement décalé afin d'obtenir un effet de lissage de l'ombre. Les différentes sous-lumière sont distribués de manières aléatoire dans le plan de la source lumineuse et avec une distance maximale de sqrt(0.8²+0.8²) choisi arbitrairement de celle-ci. L'impact du nombre de carte d'ombre associé, de résolution 128x128, est le lissage illustré figure 5.5. Voir la figure 5.6 pour le rendu entier de la scène.

Plus le nombre de carte d'ombre augmentent plus le contour de l'ombre est lissé, ce qui donne l'impression d'un dégradé entre la partie éclairé et la partie ombré. En terme de performance, voir figure 5.7, l'opération est de plus en plus coûteuse avec le nombre de carte d'ombre. Un rendu est effectué par sous-lumière, donc il faudra le temps de calcul unitaire du rendu par sous-lumière fois le nombre de carte d'ombre à calculer.
\begin{figure}[!h]
\subfigure[1]{ \includegraphics[scale=0.25]{/Test/NbShadow/NbShadowZoom_1map_128*128.png} }
\subfigure[4]{ \includegraphics[scale=0.25]{/Test/NbShadow/NbShadowZoom_4map_128*128.png} }
\subfigure[9]{ \includegraphics[scale=0.25]{/Test/NbShadow/NbShadowZoom_9map_128*128.png} }
\begin{center}
\subfigure[16]{ \includegraphics[scale=0.25]{/Test/NbShadow/NbShadowZoom_16map_128*128.png} }
\subfigure[25]{ \includegraphics[scale=0.25]{/Test/NbShadow/NbShadowZoom_25map_128*128.png} }
\end{center}
\caption{Zoom de l'ombre projeté selon le nombre de carte d'ombre de résolution 128*128}
\end{figure}

\begin{figure}[!h]
\subfigure[1]{\includegraphics[scale=0.25]{/Test/NbShadow/NbShadow_1map_128*128.png} }
\subfigure[4]{\includegraphics[scale=0.25]{/Test/NbShadow/NbShadow_4map_128*128.png} }
\subfigure[9]{\includegraphics[scale=0.25]{/Test/NbShadow/NbShadow_9map_128*128.png} }
\begin{center}
\subfigure[16]{\includegraphics[scale=0.25]{/Test/NbShadow/NbShadow_16map_128*128.png} }
\subfigure[25]{\includegraphics[scale=0.25]{/Test/NbShadow/NbShadow_25map_128*128.png} }
\end{center}
\caption{Ombre projeté selon le nombre de carte d'ombre de résolution 128*128}
\end{figure}

\begin{center}
\begin{figure}[!h]
\begin{center}
\includegraphics[scale=0.5]{/Test/NbShadow/Perf.png}
\end{center}
\caption{Impact du nombre de carte d'ombre sur les performances}
\end{figure}
\end{center}

\newpage
\subsection{Convolution sur la carte d'ombre}
Le test porte sur l'application d'un filtre médian sur la carte d'ombre pour augmenter le lissage de celle-ci. Le test porte sur la taille du filtre appliqué, voir 5.8. Le contour est lissé mais la figure 5.9 montre la limitation de la méthode, en effet plus la taille est grande plus on perd l'information du contour, donc il ne faut pas appliquer une taille du filtre trop importante, dans l'exemple supérieur à 5x5.

La courbe de performance, voir figure 5.10, montre la diminution linéaire du nombre d'image par secondes, cette linéarité est expliqué par le nombre de processeur graphique et la faible résolution de la carte, cela n'est pas représentatif de la complexité réel de la convolution.
\begin{figure}[!h]
\subfigure[3x3]{ \includegraphics[scale=0.25]{/Test/Traitement/ConvolutionZoom_kernel3_128*128.png} }
\subfigure[5x5]{ \includegraphics[scale=0.25]{/Test/Traitement/ConvolutionZoom_kernel5_128*128.png} }
\subfigure[7x7]{ \includegraphics[scale=0.25]{/Test/Traitement/ConvolutionZoom_kernel7_128*128.png} }
\caption{Zoom sur l'Ombre projeté selon la taille du filtre de convolution sur la carte d'ombre de résolution 128*128}
\end{figure}

\begin{figure}[!h]
\subfigure[3x3]{ \includegraphics[scale=0.25]{/Test/Traitement/Convolution_kernel3_128*128.png} }
\subfigure[5x5]{ \includegraphics[scale=0.25]{/Test/Traitement/Convolution_kernel5_128*128.png} }
\subfigure[7x7]{ \includegraphics[scale=0.25]{/Test/Traitement/Convolution_kernel7_128*128.png} }
\caption{Ombre projeté selon la taille du filtre de convolution sur la carte d'ombre de résolution 128*128}
\end{figure}

\begin{center}
\begin{figure}[!h]
\begin{center}
\includegraphics[scale=0.5]{/Test/Traitement/Perf.png}
\end{center}
\caption{Impact de la taille de filtre de convolution sur les performances pour une carte d'ombre de résolution 128*128}
\end{figure}
\end{center}

\newpage
\subsection{Représentativité du nombre d'échantillons de la scène}
L'échantillonnage de la scène vise à diminuer la complexité du rendu de celle-ci pour les ombres. La figure 5.11 illustre le rendu selon le nombre d'échantillon, il nécessaire d'en avoir en quantité suffisante afin d'avoir une ombre représentatif de l'objet. La complexité du rendu évolue linéairement avec avec le nombre d'échantillon, voir figure 5.12, l’intérêt principale est d'accélérer le rendu, sachant que le nombre d'échantillon est fixé à l'avance, la maîtrise du temps de rendu de la carte d'ombre est possible.
\begin{figure}[!h]
\begin{center}
\subfigure[500]{ \includegraphics[scale=0.25]{/Test/NombreEchantillon/Sample_500.png} }
\subfigure[1500]{ \includegraphics[scale=0.25]{/Test/NombreEchantillon/Sample_1500.png} }
\end{center}
\begin{center}
\subfigure[4000]{ \includegraphics[scale=0.25]{/Test/NombreEchantillon/Sample_4000.png} }
\subfigure[10000]{ \includegraphics[scale=0.25]{/Test/NombreEchantillon/Sample_10000.png} }
\end{center}
\caption{Ombre projeté selon le nombre d'échantillon sur la carte d'ombre de résolution 128*128}
\end{figure}

\begin{center}
\begin{figure}[!h]
\begin{center}
\includegraphics[scale=0.5]{/Test/NombreEchantillon/Perf.png}
\end{center}
\caption{Impact du nombre d'échantillon sur les performances pour une carte d'ombre de résolution 128*128}
\end{figure}
\end{center}

\newpage
\subsection{Taille des points utilisés pour générer les cartes d'ombres}
Ce test illustre le choix de la taille des points échantillonné basé sur la distance à la lumière. La figure 5.13 illustre la variation de taille, si celle-ci devient trop importante, l'ombre est déformé, l'effet est semblable à une dilatation en traitement d'image. Le choix du facteur est donc important afin de trouver un compromis entre le nombre  de points échantillonné et leurs tailles. Cette technique n'impacte pas la performance de rendu, c'est un paramètre modifié dans le pipeline graphique.
\begin{figure}[!h]
\begin{center}
\subfigure[500]{ \includegraphics[scale=0.25]{/Test/TailleSplate/Sample_1500.png} }
\subfigure[1500]{ \includegraphics[scale=0.25]{/Test/TailleSplate/Sample_1500_Splate*5.png} }
\end{center}
\begin{center}
\subfigure[4000]{ \includegraphics[scale=0.25]{/Test/TailleSplate/Sample_1500_Splate*10.png} }
\subfigure[10000]{ \includegraphics[scale=0.25]{/Test/TailleSplate/Sample_1500_Splate*20.png} }
\end{center}
\caption{Ombre projeté selon la taille des splates sur la carte d'ombre de résolution 128*128 avec 1500 échantillons}
\end{figure}
